import java.util.concurrent.ForkJoinTask;

/**
 * @Info: 在1.414和1.415中间一直用二分法求中间的值，吧这个值的平方和2比较
 * 如果值的平方大于2，则最大值变为这个值，最小值不变否则，最小值变为这个值，最大值不变
 * @Author: 唐小尊
 * @Date: 2020/3/2  14:55
 */
public class sqrt2 {
    static final  double EPSILON = 0.0000000001;

    static double sqrt2(){
        double low = 1.414, high = 1.415;
        double mid = (low + high) / 2;//利用二分法来循环比较
        while(high - low > EPSILON){
            if (mid * mid > 2) {//取其平均值,然后根据平方来与2比较
                high = mid;
            }else {
                low = mid;
            }
            mid  = (high + low) / 2;
        }
        return mid;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        long time = System.currentTimeMillis();
        double mid =  sqrt2();
        System.out.print(mid);
        System.out.println("1最终计算结果: " + mid +"耗时："+(System.currentTimeMillis() - time)+" 毫秒");
    }
}
